﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entities;
using BLL;

namespace CuaHangBangDia.QLBD
{
    public partial class ThemBDForm : Form
    {
        private bool _selectAll = false;
       // private TextBox editingBox;
        public ThemBDForm()
        {
            InitializeComponent();
            dgvThemBD.AutoGenerateColumns = false;
            //editingBox = default(TextBox);

        }
        public void LoadComBoBox()
        {            
            List<LoaiBangDia> loai = LoaiBangDia.Objects.GetAll().ToList();
            List<TheLoai> Theloai = TheLoai.Objects.GetAll().ToList();
            dgcLoaiDia.DataSource = loai;
            dgcTheLoai.DataSource = Theloai;
            dgcLoaiDia.DisplayMember = "TenLoai";
            dgcTheLoai.DisplayMember = "TenTheLoai";
            dgcLoaiDia.ValueMember = "MaLoai";
            dgcTheLoai.ValueMember = "MaTheLoai";

        }

        private void ThemBDForm_Load(object sender, EventArgs e)
        {
            LoadComBoBox();
        }

        private void dgvThemBD_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            int n = dgvThemBD.Rows.Count - 1;
            if (e.ColumnIndex == 0 && n > 0)
            {
                _selectAll = !_selectAll;
                for (int idx = 0; idx < n; idx++)
                {
                    dgvThemBD.Rows[idx].Selected = _selectAll;
                    dgvThemBD.Rows[idx].Cells[0].Value = _selectAll;
                }

            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            int th = 0;
            if (dgvThemBD.Rows.Count - 1 > 0)
            {
                for (int i = 0; i < dgvThemBD.Rows.Count - 1; i++)
                {
                    try
                    {
                        if (dgvThemBD.Rows[i].Cells[0].Value != null && dgvThemBD.Rows[i].Cells[0].Value.ToString() == "True")
                        {
                            String ten = dgvThemBD.Rows[i].Cells[1].Value.ToString();
                            List<BangDia> test = BangDia.Objects.Find(q => q.TenBangDia == ten).ToList();
                            if (test.Count > 0)
                            {
                                DialogResult que = MessageBox.Show("Băng Đĩa " + ten + " đã tồn tại trong CSDL! Bạn có muốn Cập nhật lại số lượng ?", "Hỏi",
                                    MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                if (que == DialogResult.Yes)
                                {
                                    foreach (BangDia item in test)
                                    {
                                        BangDia bdup = new BangDia();
                                        bdup.MaBangDia = item.MaBangDia;
                                        bdup.TenBangDia = item.TenBangDia;
                                        bdup.MaLoai = item.MaLoai;
                                        bdup.MaTheLoai = item.MaTheLoai;
                                        bdup.Gia = item.Gia;
                                        bdup.SoLuong = Convert.ToInt32(dgvThemBD.Rows[i].Cells[5].Value) + item.SoLuong;
                                        bool up = BangDia.Objects.Update(bdup);
                                        if (up)
                                            MessageBox.Show("Cập nhật số lượng của băng đĩa: " + bdup.TenBangDia + " thành công!");
                                    }
                                }
                                else if (que == DialogResult.No)
                                {
                                    i++;
                                    BangDia bd = GetDataBD(i);
                                    th = BangDia.Objects.Add(bd);
                                }
                            }
                            else
                            {
                                BangDia bd = GetDataBD(i);
                                th = BangDia.Objects.Add(bd);
                            }
                        }
                        else
                            MessageBox.Show("Vui lòng chọn đĩa muốn thêm !");
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Vui lòng nhập đủ dữ liệu", "Cảnh Báo");
                    }
                }
                if (th > 0)
                {
                    MessageBox.Show("Thêm Băng Đĩa thành công !");
                    dgvThemBD.Rows.Clear();
                }
            }
        }

        private BangDia GetDataBD(int i)
        {
            BangDia bd = new BangDia();
            bd.TenBangDia = dgvThemBD.Rows[i].Cells[1].Value.ToString();
            bd.MaLoai = dgvThemBD.Rows[i].Cells[2].Value.ToString();
            bd.MaTheLoai = dgvThemBD.Rows[i].Cells[3].Value.ToString();
            bd.Gia = double.Parse(dgvThemBD.Rows[i].Cells[4].Value.ToString());
            bd.SoLuong = Convert.ToInt32(dgvThemBD.Rows[i].Cells[5].Value.ToString());
            return bd;
        }

        private void dgvThemBD_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (dgvThemBD.CurrentCell.ColumnIndex == 4 && dgvThemBD.CurrentCell.ColumnIndex == 5)
            {
                if (!char.IsNumber(e.KeyChar) && !char.IsControl(e.KeyChar))
                {
                    e.Handled = true;
                }
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            dgvThemBD.Rows.Clear();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            if (dgvThemBD.Rows.Count - 1 > 0)
            {
                DialogResult q = MessageBox.Show("Bạn chắc chắn muốn hủy quá trình thêm và thoát khỏi chức năng thêm Băng Đĩa ?", "Hỏi",
                                    MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (q == DialogResult.OK)
                    this.Close();
            }
            else
                this.Close();

        } 

        private void dgvThemBD_CellValidated(object sender, DataGridViewCellEventArgs e)
        {
            dgvThemBD.Rows[e.RowIndex].ErrorText = "";
        }

        private void dgvThemBD_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            int newInteger;
            if (KTSo(e))
            {

                if ((!int.TryParse(e.FormattedValue.ToString(), out newInteger) && !String.IsNullOrWhiteSpace(e.FormattedValue.ToString())))
                {
                    dgvThemBD.Rows[e.RowIndex].ErrorText =
           "Số lượng chỉ nhập dữ liệu kiểu số !";
                    e.Cancel = true;
                }
            }
        }
        private bool KTSo(DataGridViewCellValidatingEventArgs e)
        {
            if (dgvThemBD.Columns[e.ColumnIndex].Name == "dgcDonGia" ||
                dgvThemBD.Columns[e.ColumnIndex].Name == "dgcSoLuong")
                return true;
            return false;
        }
    }
}
